﻿namespace CS
{
    /// <summary>
    /// 访问器委托
    /// </summary>
    /// <param name="target">目标对象</param>
    /// <returns></returns>
    public delegate object Getter(object target);


    /// <summary>
    /// 设置器委托
    /// </summary>
    /// <param name="target">目标对象</param>
    /// <param name="value">设置器参数</param>
    public delegate void Setter(object target, object value);

    /// <summary>
    /// 过程委托
    /// </summary>
    /// <param name="target">目标对象</param>
    /// <param name="arguments">过程参数</param>
    public delegate void Proc(object target, params object[] arguments);

    /// <summary>
    /// 函数委托
    /// </summary>
    /// <param name="target">目标对象</param>
    /// <param name="arguments">函数参数</param>
    /// <returns>函数返回值</returns>
    public delegate object Func(object target, params object[] arguments);

    /// <summary>
    /// 缺省构造函数委托
    /// </summary>
    /// <returns></returns>
    public delegate object DefaultConstructorHandler();


    /// <summary>
    /// 构造函数委托
    /// </summary>
    /// <param name="arguments">构造函数参数列表</param>
    /// <returns>返回创建的对象</returns>
    public delegate object ConstructorHandler(params object[] arguments);

}